/**
 * 通用基础类型定义
 */

/**
 * 分页响应数据
 */
export interface PageResponse<T = any> {
  /** 当前页数据列表 */
  content: T[]
  /** 总记录数 */
  totalElements: number
  /** 总页数 */
  totalPages: number
  /** 每页大小 */
  size: number
  /** 当前页码（从0开始） */
  number: number
  /** 是否为首页 */
  first: boolean
  /** 是否为末页 */
  last: boolean
  /** 是否有下一页 */
  hasNext?: boolean
  /** 是否有上一页 */
  hasPrevious?: boolean
}

/**
 * 分页查询参数
 */
export interface PageParams {
  /** 页码（从0开始） */
  page: number
  /** 每页大小 */
  size: number
  /** 排序字段 */
  sort?: string
  /** 排序方向 */
  direction?: 'asc' | 'desc'
}

/**
 * 排序参数
 */
export interface SortParams {
  /** 排序字段 */
  field: string
  /** 排序方向 */
  order: 'asc' | 'desc'
}

/**
 * 搜索参数
 */
export interface SearchParams {
  /** 关键词 */
  keyword?: string
  /** 过滤条件 */
  filters?: Record<string, any>
  /** 排序参数 */
  sort?: SortParams
  /** 分页参数 */
  pagination?: PageParams
}

/**
 * 基础实体接口
 */
export interface BaseEntity {
  /** 主键ID */
  id: number
  /** 创建时间 */
  createTime: string
  /** 更新时间 */
  updateTime: string
}

/**
 * 状态枚举
 */
export enum Status {
  ENABLED = 'ENABLED',
  DISABLED = 'DISABLED'
}

/**
 * 操作结果枚举
 */
export enum OperationResult {
  SUCCESS = 'SUCCESS',
  FAILURE = 'FAILURE',
  ERROR = 'ERROR'
}

/**
 * 选择选项
 */
export interface SelectOption {
  label: string
  value: any
  disabled?: boolean
  children?: SelectOption[]
}